↳ Prolog
↳ PrologToPiTRSProof
flatten_in_ga(atom(X), .(X, [])) → flatten_out_ga(atom(X), .(X, []))
flatten_in_ga(cons(atom(X), U), .(X, Y)) → U1_ga(X, U, Y, flatten_in_ga(U, Y))
flatten_in_ga(cons(cons(U, V), W), X) → U2_ga(U, V, W, X, flatten_in_ga(cons(U, cons(V, W)), X))
U2_ga(U, V, W, X, flatten_out_ga(cons(U, cons(V, W)), X)) → flatten_out_ga(cons(cons(U, V), W), X)
U1_ga(X, U, Y, flatten_out_ga(U, Y)) → flatten_out_ga(cons(atom(X), U), .(X, Y))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
flatten_in_ga(atom(X), .(X, [])) → flatten_out_ga(atom(X), .(X, []))
flatten_in_ga(cons(atom(X), U), .(X, Y)) → U1_ga(X, U, Y, flatten_in_ga(U, Y))
flatten_in_ga(cons(cons(U, V), W), X) → U2_ga(U, V, W, X, flatten_in_ga(cons(U, cons(V, W)), X))
U2_ga(U, V, W, X, flatten_out_ga(cons(U, cons(V, W)), X)) → flatten_out_ga(cons(cons(U, V), W), X)
U1_ga(X, U, Y, flatten_out_ga(U, Y)) → flatten_out_ga(cons(atom(X), U), .(X, Y))
FLATTEN_IN_GA(cons(atom(X), U), .(X, Y)) → U1_GA(X, U, Y, flatten_in_ga(U, Y))
FLATTEN_IN_GA(cons(atom(X), U), .(X, Y)) → FLATTEN_IN_GA(U, Y)
FLATTEN_IN_GA(cons(cons(U, V), W), X) → U2_GA(U, V, W, X, flatten_in_ga(cons(U, cons(V, W)), X))
FLATTEN_IN_GA(cons(cons(U, V), W), X) → FLATTEN_IN_GA(cons(U, cons(V, W)), X)
flatten_in_ga(atom(X), .(X, [])) → flatten_out_ga(atom(X), .(X, []))
flatten_in_ga(cons(atom(X), U), .(X, Y)) → U1_ga(X, U, Y, flatten_in_ga(U, Y))
flatten_in_ga(cons(cons(U, V), W), X) → U2_ga(U, V, W, X, flatten_in_ga(cons(U, cons(V, W)), X))
U2_ga(U, V, W, X, flatten_out_ga(cons(U, cons(V, W)), X)) → flatten_out_ga(cons(cons(U, V), W), X)
U1_ga(X, U, Y, flatten_out_ga(U, Y)) → flatten_out_ga(cons(atom(X), U), .(X, Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FLATTEN_IN_GA(cons(atom(X), U), .(X, Y)) → U1_GA(X, U, Y, flatten_in_ga(U, Y))
FLATTEN_IN_GA(cons(atom(X), U), .(X, Y)) → FLATTEN_IN_GA(U, Y)
FLATTEN_IN_GA(cons(cons(U, V), W), X) → U2_GA(U, V, W, X, flatten_in_ga(cons(U, cons(V, W)), X))
FLATTEN_IN_GA(cons(cons(U, V), W), X) → FLATTEN_IN_GA(cons(U, cons(V, W)), X)
flatten_in_ga(atom(X), .(X, [])) → flatten_out_ga(atom(X), .(X, []))
flatten_in_ga(cons(atom(X), U), .(X, Y)) → U1_ga(X, U, Y, flatten_in_ga(U, Y))
flatten_in_ga(cons(cons(U, V), W), X) → U2_ga(U, V, W, X, flatten_in_ga(cons(U, cons(V, W)), X))
U2_ga(U, V, W, X, flatten_out_ga(cons(U, cons(V, W)), X)) → flatten_out_ga(cons(cons(U, V), W), X)
U1_ga(X, U, Y, flatten_out_ga(U, Y)) → flatten_out_ga(cons(atom(X), U), .(X, Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
FLATTEN_IN_GA(cons(atom(X), U), .(X, Y)) → FLATTEN_IN_GA(U, Y)
FLATTEN_IN_GA(cons(cons(U, V), W), X) → FLATTEN_IN_GA(cons(U, cons(V, W)), X)
flatten_in_ga(atom(X), .(X, [])) → flatten_out_ga(atom(X), .(X, []))
flatten_in_ga(cons(atom(X), U), .(X, Y)) → U1_ga(X, U, Y, flatten_in_ga(U, Y))
flatten_in_ga(cons(cons(U, V), W), X) → U2_ga(U, V, W, X, flatten_in_ga(cons(U, cons(V, W)), X))
U2_ga(U, V, W, X, flatten_out_ga(cons(U, cons(V, W)), X)) → flatten_out_ga(cons(cons(U, V), W), X)
U1_ga(X, U, Y, flatten_out_ga(U, Y)) → flatten_out_ga(cons(atom(X), U), .(X, Y))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FLATTEN_IN_GA(cons(atom(X), U), .(X, Y)) → FLATTEN_IN_GA(U, Y)
FLATTEN_IN_GA(cons(cons(U, V), W), X) → FLATTEN_IN_GA(cons(U, cons(V, W)), X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
FLATTEN_IN_GA(cons(atom(X), U)) → FLATTEN_IN_GA(U)
FLATTEN_IN_GA(cons(cons(U, V), W)) → FLATTEN_IN_GA(cons(U, cons(V, W)))
No rules are removed from R.
FLATTEN_IN_GA(cons(atom(X), U)) → FLATTEN_IN_GA(U)
FLATTEN_IN_GA(cons(cons(U, V), W)) → FLATTEN_IN_GA(cons(U, cons(V, W)))
POL(FLATTEN_IN_GA(x1)) = 2·x1
POL(atom(x1)) = x1
POL(cons(x1, x2)) = 1 + 2·x1 + x2
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ PisEmptyProof